// package com.tan.config;
//
// import org.aspectj.lang.JoinPoint;
// import org.aspectj.lang.ProceedingJoinPoint;
// import org.aspectj.lang.annotation.*;
// import org.springframework.core.annotation.Order;
// import org.springframework.stereotype.Component;
//
// import java.util.Arrays;
//
// /**
//  * @author tlj
//  * @date 2022/08/19 17:12:04
//  */
// @Aspect
// @Component
//
// public class AspectTest {
//     //切入点
//     @Pointcut("execution(* com.tan.controller..*(..))")
//     public void testAspect() {
//
//     }
//     @Before(value = "testAspect()")
//     public void before(JoinPoint joinPoint) {
//         joinPoint.getArgs();
//         System.out.println("前置通知");
//     }
//
//     @Around(value = "testAspect()")
//     public Object test(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
//         System.out.println("环绕通知: 方法前，test先执行了");
//         //环绕通知=前置+目标方法执行+后置通知，proceed方法就是用于启动目标方法执行的.
//         //确实是order越小越是最先执行，但更重要的是最先执行的最后结束
//         //Thread.sleep(5000);
//         Object s = proceedingJoinPoint.proceed();
//         System.out.println("方法名：" + proceedingJoinPoint.getSignature());
//         System.out.println("方法参数：" + Arrays.toString(proceedingJoinPoint.getArgs()));
//         System.out.println("s是方法执行的结果： " + s);
//         System.out.println("环绕通知: 方法后");
//         return "";
//     }
//     //
//     //
//     //
//     @After(value = "testAspect()")
//     public void after(JoinPoint joinPoint) {
//         System.out.println("后置通知");
//     }
//
//     // @AfterReturning(value = "testAspect()")
//     // public void afterReturning() {
//     //     System.out.println("方法执行后而且没有异常后的通知");
//     // }
//     //
//     // @AfterThrowing(value = "testAspect()")
//     // public void afterThrowing() {
//     //     System.out.println("异常后通知");
//     // }
// }
